using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using 凌依.工具库;

public class 地图数据管理器 : 单例_基础管理器<地图数据管理器>
{
    public Dictionary<Vector2Int, 地图物品> 底层 = new Dictionary<Vector2Int, 地图物品>();
    public Dictionary<Vector2Int, 地图物品> 中层 = new Dictionary<Vector2Int, 地图物品>();
    public Dictionary<Vector2Int, 地图物品> 上层 = new Dictionary<Vector2Int, 地图物品>();
    public Dictionary<Vector2Int, 地图物品> 顶层 = new Dictionary<Vector2Int, 地图物品>();
    /// <summary>
    /// 默认添加的都是同一个模板
    /// </summary>
    /// <param name="坐标"></param>
    /// <param name="物品名"></param>
    public void 添加瓦片_模板(Vector2Int 坐标,string 物品名)
    {
        地图物品 瓦片 = 游戏数据管理器.获取实例.获取地图模板(物品名);
        if (瓦片 == null)
        {
            Debug.LogError("空的模板信息"+ 物品名);
            return;
        }
        switch (瓦片.图层)
        {
            case 图层.底层:
                if (!底层.ContainsKey(坐标))
                    底层.Add(坐标, 瓦片);
                break;
            case 图层.中层:
                if (!中层.ContainsKey(坐标))
                    中层.Add(坐标, 瓦片);
                break;
            case 图层.上层:
                if (!上层.ContainsKey(坐标))
                    上层.Add(坐标, 瓦片);
                break;
            case 图层.顶层:
                if (!顶层.ContainsKey(坐标))
                    顶层.Add(坐标, 瓦片);
                break;
            default:
                break;
        }
    }

    public 地图物品 读取瓦片(Vector2Int pos,图层 图层)
    {
        switch (图层)
        {
            case 图层.底层:
                if(底层.ContainsKey(pos))
                    return 底层[pos];
                break;
            case 图层.中层:
                if (中层.ContainsKey(pos))
                    return 中层[pos];
                break;
            case 图层.上层:
                if (上层.ContainsKey(pos))
                    return 上层[pos];
                break;
            case 图层.顶层:
                if (顶层.ContainsKey(pos))
                    return 顶层[pos];
                break;
            default:
                break;
        }
        return null;
    }

    public void 更改瓦片(Vector2Int pos,地图物品 物品)
    {
        if (物品.不可更改)
        {
            Debug.LogError("地图数据 禁止添加模板数据");
            return;
        }

        switch (物品.图层)
        {
            case 图层.底层:
                if (!底层.ContainsKey(pos))
                    底层.Add(pos, 物品);
                else
                    底层[pos] = 物品;
                break;
            case 图层.中层:
                if (!中层.ContainsKey(pos))
                    中层.Add(pos, 物品);
                else
                    中层[pos] = 物品;
                break;
            case 图层.上层:
                if (!上层.ContainsKey(pos))
                    上层.Add(pos, 物品);
                else
                    上层[pos] = 物品;
                break;
            case 图层.顶层:
                if (!顶层.ContainsKey(pos))
                    顶层.Add(pos, 物品);
                else
                    顶层[pos] = 物品;
                break;
            default:
                break;
        }

    }
}

